#
#  ChoiceController.rb
#  wov
#
#  Created by James Tuley on 4/6/08.
#  Copyright (c) 2008 __MyCompanyName__. All rights reserved.
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is WOV Suite.
#
# The Initial Developer of the Original Code is
# James Tuley.
# Portions created by the Initial Developer are Copyright (C) 2008
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#           James Tuley <jay+wov@tuley.name> (WOV Suite Author)
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK ***** */
require 'osx/cocoa'

class ChoiceController < OSX::NSObject
  include OSX

ib_outlets :window, :table_view
attr_accessor :window, :fileList 


ib_action :modalAction
def modalAction(sender)
	NSApp.stopModalWithCode(sender.tag)
end

def reload
	@table_view.reloadData()
end

def numberOfRowsInTableView(aTableView)
	if defined? @fileList
		return @fileList.length
	else
		return 0
	end
end

def tableView_objectValueForTableColumn_row(aTableView, aColumn, aRow)
	tFilename = self.fileList.at(aRow)
	if aColumn.identifier.isEqualToString("filename")
		return tFilename
	else
		return NSWorkspace.sharedWorkspace.iconForFile(tFilename)
	end
end

def tableView_writeRows_toPasteboard(tableView,rows,pboard)
		tableView.registerForDraggedTypes([NSFilenamesPboardType])
	    pboard.declareTypes_owner([NSFilenamesPboardType], self)
		tArray =rows.collect{|anIndex| self.fileList.at(anIndex)}
		pboard.setPropertyList_forType(tArray,NSFilenamesPboardType)
	   
	    return true
end

def tableView_validateDrop_proposedRow_proposedDropOperation(aTableView,anInfo,aRow,anOperation)
	   aTableView.setDropRow_dropOperation(aRow, NSTableViewDropAbove)
	   return NSDragOperationGeneric
end

def tableView_acceptDrop_row_dropOperation(view,info,row,operation)
	pboard = info.draggingPasteboard
	tableSource = info.draggingSource.dataSource
   
	if pboard.availableTypeFromArray([NSFilenamesPboardType])
	
		tPaths = pboard.propertyListForType(NSFilenamesPboardType)
		tList = self.fileList.collect{|item| tPaths.include?(item) ? "" : item }
		tPaths.reverse_each{|item| tList.insert(row,item)}
		self.fileList= tList.reject{|item| item.empty?}
		view.reloadData()
		return true
	else
		return false
	end

end

end